entries: Fix mnemonic activation
authorMatthias Clasen <mclasen@redhat.com>
Mon, 4 Mar 2019 03:14:19 +0000 (22:14 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 4 Mar 2019 03:25:52 +0000 (22:25 -0500)
Since entries are no longer can-focus, the default
mnemonic_activate handler refuses to act on them.

gtk/gtkentry.c
gtk/gtkpasswordentry.c
gtk/gtksearchentry.c
gtk/gtkspinbutton.c

index 02e5dd931718a8b42a564675e849f2929db2e4d3..3a70c9ca56c4fef7906283d41c78b76913ac2d38 100644 (file)
@@ -332,6 +332,18 @@ gtk_entry_grab_focus (GtkWidget *widget)
   gtk_widget_grab_focus (priv->text);
 }
 
+static gboolean
+gtk_entry_mnemonic_activate (GtkWidget *widget,
+                             gboolean   group_cycling)
+{
+  GtkEntry *entry = GTK_ENTRY (widget);
+  GtkEntryPrivate *priv = gtk_entry_get_instance_private (entry);
+
+  gtk_widget_grab_focus (priv->text);
+
+  return TRUE;
+}
+
 static void
 gtk_entry_class_init (GtkEntryClass *class)
 {
@@ -351,6 +363,7 @@ gtk_entry_class_init (GtkEntryClass *class)
   widget_class->query_tooltip = gtk_entry_query_tooltip;
   widget_class->direction_changed = gtk_entry_direction_changed;
   widget_class->grab_focus = gtk_entry_grab_focus;
+  widget_class->mnemonic_activate = gtk_entry_mnemonic_activate;
   
   quark_entry_completion = g_quark_from_static_string ("gtk-entry-completion-key");
 
index 8b2a022e883d4bb679190b63cd74500713cd625d..9a48bee5470c68ec09f22cf119d65ef9e744401f 100644 (file)
@@ -226,6 +226,18 @@ gtk_password_entry_grab_focus (GtkWidget *widget)
   gtk_widget_grab_focus (priv->entry);
 }
 
+static gboolean
+gtk_password_entry_mnemonic_activate (GtkWidget *widget,
+                                      gboolean   group_cycling)
+{
+  GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (widget);
+  GtkPasswordEntryPrivate *priv = gtk_password_entry_get_instance_private (entry);
+
+  gtk_widget_grab_focus (priv->entry);
+
+  return TRUE;
+}
+
 static void
 gtk_password_entry_class_init (GtkPasswordEntryClass *klass)
 {
@@ -242,6 +254,7 @@ gtk_password_entry_class_init (GtkPasswordEntryClass *klass)
   widget_class->size_allocate = gtk_password_entry_size_allocate;
   widget_class->get_accessible = gtk_password_entry_get_accessible;
   widget_class->grab_focus = gtk_password_entry_grab_focus;
+  widget_class->mnemonic_activate = gtk_password_entry_mnemonic_activate;
  
   gtk_editable_install_properties (object_class, 1);
 
index a227956e932e9f65f44eb1df78f5b49c1e2fb64e..eeeb618df5e63489dfa90a23fa981e47d29251e4 100644 (file)
@@ -258,6 +258,18 @@ gtk_search_entry_grab_focus (GtkWidget *widget)
   gtk_text_grab_focus_without_selecting (GTK_TEXT (priv->entry));
 }
 
+static void
+gtk_search_entry_mnemonic_activate (GtkWidget *widget,
+                                    gboolean   group_cycling)
+{
+  GtkSearchEntry *entry = GTK_SEARCH_ENTRY (widget);
+  GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry);
+
+  gtk_widget_grab_focus (priv->entry);
+
+  return TRUE;
+}
+
 static void
 gtk_search_entry_class_init (GtkSearchEntryClass *klass)
 {
@@ -273,6 +285,7 @@ gtk_search_entry_class_init (GtkSearchEntryClass *klass)
   widget_class->size_allocate = gtk_search_entry_size_allocate;
   widget_class->get_accessible = gtk_search_entry_get_accessible;
   widget_class->grab_focus = gtk_search_entry_grab_focus;
+  widget_class->mnemonic_activate = gtk_search_entry_mnemonic_activate;
 
   klass->stop_search = gtk_search_entry_stop_search;
 
index 2f99cf6a00e8bc612f13e3cbe88bca882f3f372a..8e16faa8370fff50ab106a440fd0c0ef4fcdeba3 100644 (file)
@@ -304,6 +304,28 @@ G_DEFINE_TYPE_WITH_CODE (GtkSpinButton, gtk_spin_button, GTK_TYPE_WIDGET,
                                 "change-value", 1,                     \
                                 GTK_TYPE_SCROLL_TYPE, scroll)
 
+
+static void
+gtk_spin_button_grab_focus (GtkWidget *widget)
+{
+  GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget);
+  GtkSpinButtonPrivate *priv = gtk_spin_button_get_instance_private (spin_button);
+
+  gtk_widget_grab_focus (priv->entry);
+}
+
+static gboolean
+gtk_spin_button_mnemonic_activate (GtkWidget *widget,
+                                   gboolean   group_cycling)
+{
+  GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget);
+  GtkSpinButtonPrivate *priv = gtk_spin_button_get_instance_private (spin_button);
+
+  gtk_widget_grab_focus (priv->entry);
+
+  return TRUE;
+}
+
 static void
 gtk_spin_button_class_init (GtkSpinButtonClass *class)
 {
@@ -321,6 +343,8 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class)
   widget_class->size_allocate = gtk_spin_button_size_allocate;
   widget_class->grab_notify = gtk_spin_button_grab_notify;
   widget_class->state_flags_changed = gtk_spin_button_state_flags_changed;
+  widget_class->grab_focus = gtk_spin_button_grab_focus;
+  widget_class->mnemonic_activate = gtk_spin_button_mnemonic_activate;
 
   class->input = NULL;
   class->output = NULL;